// vue.config.js
const path = require('path');

function resolve(dir) {
    return path.join(__dirname, dir)
}

console.log("Building for " + process.env.NODE_ENV);

var webpack = require("webpack");

module.exports = {
    // configureWebpack: {
    //     plugins: [
    //         new webpack.ProvidePlugin({
    //             "window.Quill": "quill",
    //             Quill: "quill"
    //         })
    //     ]
    // },
    // publicPath: projectname, // 官方要求修改路径在这里做更改，默认是根目录下，可以自行配置
    publicPath: process.env.NODE_ENV === "production" ? "./" : "./",
    // 输出文件路径，默认为dist
    outputDir: process.env.NODE_ENV === "production" ? "../public/" : "./dist", //标识是打包哪个文件
    // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。
    assetsDir: "",
    // 指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径
    indexPath: process.env.NODE_ENV === 'production'
    ? '../resources/views/index.blade.php'
    : 'index.html',
    // 默认情况下，生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存。如果你无法使用 Vue CLI 生成的 index HTML，你可以通过将这个选项设为 false 来关闭文件名哈希。
    filenameHashing: true,
    // 生产环境是否生成 sourceMap 文件
    productionSourceMap: false, // 生产环境 sourceMap
    chainWebpack: config => {
        // 移除 prefetch 插件
        config.plugins.delete("preload");
        // config.plugins.delete('prefetch');

        // // 或者
        // // 修改它的选项：
        // config.plugin('prefetch').tap(options => {
        //   options[0].fileBlacklist = options[0].fileBlacklist || []
        //   options[0].fileBlacklist.push(/myasyncRoute(.)+?\.js$/)
        //   return options
        // })

        // key,value自行定义，比如.set('@@', resolve('src/components'))
        config.resolve.alias
            .set('@', resolve('src'))
            .set('@@sa', resolve('src/components'))
    },
    devServer: {
        open: true, // 项目构建成功之后，自动弹出页面
        compress: false, // 开启压缩
        host: "localhost", // 主机名，也可以127.0.0.0 || 做真机测试时候0.0.0.0
        port: 8080, // 端口号，默认8080
        https: false, // 协议
        hotOnly: false, // 没啥效果，热模块，webpack已经做好了
        // 设置让浏览器 overlay 同时显示警告和错误
        overlay: {
            warnings: true,
            errors: true
        }
    }
}
